package com.tiancheng.trade.payment.channel.cmb.params;

import lombok.Getter;
import lombok.Setter;

/**
 * 招总行统一下单参数
 *
 * @author kellen
 * @date 2024/4/15
 */
@Getter
@Setter
public class CmbUnifiedOrderParam {

    // appid
    private String appid;
    // 用户id
    private String userId;
    // 商户支付订单号
    private String outTradeNo;
    // 产品id
    private String productId;
    // 货币代码 （CNY，默认人民币）
    private String currencyType;
    // 支付金额
    private Integer amount;
    // 商品名称
    private String productName;
    // 商品详情
    private String productDetail;
    // 时间戳
    private String ts;
    // 子应用ID，服务商模式，需要该字段
    private String subAppid;
    // 指定支付渠道
    private String channel;
    // todo 文档中没有
    private String settleAppid;
    // 招总行聚合支付（文档中没有）
    private String realChannel;
    // 订单是否核销（文档中没有）
    private Integer needSettleCheck;
    // 透传字段
    private String metadata;
    // 购买商品数量
    private Integer num;
    // 回调地址
    private String callbackUrl;
    // 微信公众号/小程序支付时为必选，需要传微信下的openid
    private String wxOpenid;
    // 计平这个坑货，跟wxOpenid保持一样
    private String wxSubOpenid;
    // 平台应收金额（分）
    private Integer platformIncome;
    // 结算应收金额（分）
    private Integer bussSettleAmount;
    // 优惠信息
    private String spInfo;
    // todo 文档中没有
    private Integer originalAmount;
    // 子订单信息列表
    private String subOutTradeNoList;
    //微信优惠信息
    private String goodsTag;

    @Getter
    @Setter
    public static class SubOutTradeNo {
        // 子支付订单号
        private String subOutTradeNo;
        // 子订单金额
        private Integer amount;
        //产品编号
        private String productId;
        //产品名称
        private String productName;
        //产品详情
        private String productDetail;
        // 平台应收金额，单位：分
        private Integer platformIncome;
        //结算应收金额，单位：分
        private Integer bussSettleAmount;
        // 子订单原来的金额
        private Integer originalAmount;
        // 规则，这个是业务侧传进来的字段
        private String classificationRule;
        // 是否需要核销 1：是
        private Integer needSettleCheck;
        // 平台应收金额详情。格式：json，如：{"A":50,"B":50}
        private String platformIncomeDetail;
        // 透传字段
        private String metadata;
        // 子应用ID，服务商模式，需要该字段
        private String subAppid;
    }
}
